import time
import unittest
from BeautifulReport import BeautifulReport as bf

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select


class ChromeTestCase(unittest.TestCase):
    """
    这是一个 Chrome 的 测试集
    """
    driver = None

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()

    def test_firefox(self):
        self.driver.get("file:///C:/Users/edz/Desktop/testhtml/exam/House.html")

        # 在 网页中 的 下拉列表框中 的物业类别中 选择 想要的 某一个选项
        # 1. 直接使用 元素定位的方式
        self.driver.find_elements(By.XPATH, "//option[2]")[0].click()

        time.sleep(3)

        # 2. 在第二种方式 中 ，我们要将 列表标签定位，通过 容器中支持的方法来点击某一个 元素
        list1 = self.driver.find_element(By.NAME, "list1")
        select = Select(list1)

        # 通过容器中支持的方法 来定位 点击 某一个选项  下标  从 0 开始
        select.select_by_index(0)  # 通过 列表中的 下标 索引来选择
        time.sleep(1)
        select.select_by_value('c')  # 通过 标签中 value 属性的 值 来选择
        time.sleep(1)
        select.select_by_visible_text('商场')  # 通过 在网页中实际显示的 文本值来点击

        # 判断  下拉式列表框是否支持多选
        # 三元运算符  三目运算符
        print('支持多选' if select.is_multiple else '不支持多选')

        elements = select.options

        # 通过  for 循环 来遍历  select 容器中的 所有的选项
        print(len(elements))
        for element in elements:
            print(element.text)

        print(self.driver.find_elements(By.XPATH, "//option[2]")[0].text)

    @classmethod
    def tearDownClass(cls):
        # cls.driver.close()
        pass


if __name__ == '__main__':
    pass
